/*
  学习目标：优化组件更新
  性能优化手段:
    1. 减轻state设计:  不需要渲染的数据, 不放在state
    2. 避免不必要的渲染: 通过shouldComponentUpdate自定义是否更新
*/

import React, { Component } from 'react';

export default class App extends Component {
  state = {
    count: 0,
  };

  render() {
    const { count } = this.state;
    return (
      <div>
        <h1>{count}</h1>
        <button onClick={() => this.setState({ count: count + 1 })}>+1</button>
        <Child />
      </div>
    );
  }
}

class Child extends React.Component {
  // 作用: 根据返回值, 决定组件是否要更新
  shouldComponentUpdate() {
    // 返回true, 表示接受更新
    // return true;
    // 返回false, 表示不接收更新
    return false;
  }

  render() {
    console.log('render执行了  ----->  ');
    return <div>我是一个写死内容的CHild</div>;
  }

  componentDidUpdate() {
    console.log('更新后执行了  ----->  ');
  }
}
